home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 2 / Mac Magazin and MacEasy Magazine CD - Issue 02.iso / Sharewarebibliothek / Applikationen / Sparkle212 folder / (Docs) / New in 2.12 < prev    next >
Text File  |  1994-07-28  |  20KB  |  321 lines

  1. What's new in 2.1.2?
  2. • In 2.1 when a window was first opened and the Video menu selected, the 
  3.     menu showed Palindrome looping as on even though it was not. This is fixed.
  4. • In 2.1 I had a serious (crashing) possible bug that could occur when a 
  5.     window was closed. This was because the life cycles of video encoding 
  6.     threads and video playing threads are different. I must rationalize 
  7.     these to one model, but till then I've applied a quick and dirty fix.
  8. • Long complicated pathways through about six auxiliary functions, used when 
  9.     threads died and a holdover from the Sparkle 1.x days, have been removed to 
  10.     use a much simpler virtual function based scheme. This is slightly faster
  11.     and, more important, much simpler hence, hopefully, less buggy.
  12. • Deactivating/activating of the ``Change file type to MPEG'' radio button in     
  13.     the open file dialog was a little erratic. This has been fixed.
  14. • Rudimentary balloon help has been added.
  15. • When memory is very low and a window starts being opened, but fails 
  16.       partway, the cleanup code was slightly wrong. Now fixed.
  17. • Improved the display on 4-bit color screens. It was very blocky.
  18. • Changed the progressbar to display properly on 4-bit color screens.
  19.     The two colors used for foreground and background were being mapped onto
  20.     the same color.
  21. • Change the progress bar to update itself better when parts of the window are 
  22.     uncovered. Before parts would be drawn quite a while before other parts
  23.     giving a result that looked silly.
  24. • Added a menu option to allow operation without ever yielding time to 
  25.     WaitNextEvent. If you don't need to give time to background applications, 
  26.     use this option for faster, less jerky, playback.
  27. • Speech manager code used to announce a delay when encoding an MPEG 
  28.     could, if timing was just wrong, crash. I think the problem was that the 
  29.     Speech Manager was building internal data structures on the stack, and 
  30.     that stack disappeared when the the MPEG encoding thread died. Anyway 
  31.     I've modified the speech code so this can't happen.
  32. • Discovered a serious problem in my video encoding code. When an MPEG 
  33.     window was resized while it was being converted to another MPEG or QT 
  34.     movie, the result could be a munged image for a few frames. The fix 
  35.     involved a major structural readjustment of Sparkle---ALL video 
  36.     manipulations now pass through ThreadEvent queues---but the result is 
  37.     that for the first time I feel confident about the theoretical 
  38.     underpinnings of Sparkle---that while minor bugs may remain, there are 
  39.     no conceptual nasties waiting to bite me.
  40. • When windows are resized, the resizing is done in a manner that leaves 
  41.     no gunk in the window in the moments before the resizing is complete.
  42. • I discovered yet another way in which things could crash---The MacOS call
  43.     DrawPicture() will crash if it runs out of memory---thanks Apple.
  44.     There's nothing I can do about this, so what I did do is try to trap 
  45.     situations that form a pattern of using DrawPicture() while memory is 
  46.     getting lower and warn you that memory is running low. This doesn't 
  47.     catch all situations but catches some.
  48. • The play/pause button no longer toggles between states when you start a 
  49.     movie saving or pause it. This is because what I was doing to get this 
  50.     to work in QT 1.x no longer works nicely in QT 2.0 --- flickering frames
  51.     result. I guess this is a consequence of DataPipe or something. 
  52.     Anyway I've replaced this with indicators in the title bar.
  53. • I made a few changes to allow easier more sensible playback of QT movies that 
  54.     consist of only sound. This is at present rudimentary but is a start.
  55.  
  56. What's new in 2.1?
  57. • Yet again memory management has been fiddled with. Previous tinkering with 
  58.     memory management was to ensure that my own code never crashed for lack 
  59.     of memory. Building on top of that, I've tried to ensure that calls to 
  60.     the operating system won't crash for lack of memory. This is more 
  61.     difficult because, obviously, I don't know just what the memory 
  62.     requirements of each call are. However I've done the best I can, and 
  63.     the resultant code seems even more robust than 2.02.
  64. • The scheduling has been revamped based on the threading. I now make 
  65.     intelligent decisions about which thread to schedule when. Also calls to
  66.     the main event loop, which were very expensive in time, have been cut 
  67.     dramatically. the result is about a 15% speed boost all round.
  68. • MPEG playback is now based on genuine timing, not on simply playing 
  69.     every frame as fast as possible. Like QuickTime movies, you can play 
  70.     MPEGs back in real time or play every frame. I also now support the 
  71.     movie controller variable speed controls obtained by control-clicking 
  72.     on the forward/backward stepper buttons.
  73. • You can now set QT and MPEG movies to loop.
  74. • You can now grow or shrink MPEG and QT movie windows.
  75. • The cursor is now hidden when movie playback starts, until you move it.
  76.     This seems to be a reasonable compromise for preventing flickering cursor
  77.     when starting a movie using the keyboard, but atill allows the user 
  78.     easily to find the cursor when needed.
  79. • When files are opened, windows are now tiled in a vaguely intelligent fashion,
  80.     attempting both to use the available screens with best depth, and to 
  81.     avoid window overlap.
  82. • Dragging windows is now aligned to a grid of optimal window placement. This
  83.     gives better movie playback.
  84. • Can now show/hide the progressPane, movie controller and frame count with the 
  85.     tab key using tab, shift-tab, control-tab.
  86. • The drawing of the progress bar has been altered slightly, to fix cosmetic 
  87.     defects and to make the appearance closer to that of the movie controller.
  88. • Support for MPEGs with a pixel aspect ratio not equal to one has been added.
  89.       At present this isn't switched on because some dumb MPEGs out there 
  90.       have a bogus aspect ratio encoded in them. However if someone wants 
  91.       this feature right away, I'll add a user interface to access it.
  92. • Support for MPEGs with multiple sequence headers has been added, not 
  93.     that I have ever seen such an MPEG.
  94. • Playback is now much faster through a variety of mechanisms. However 
  95.     this has, as a consequence, lower quality playback. You may set through 
  96.     preferences which optimizations you're willing to accept for faster 
  97.     playback and which you're not willing to accept. All optimizations are 
  98.     turned off when converting an MPEG to another format so that you'll get 
  99.     the best possible quality.
  100.     Playback speed is now about 1.6 times faster for 24 bit screens, about 
  101.     2.5 times as fast for 8 bit grey screens, and improvements in between for 
  102.     other screen depths.
  103. • Special purpose display code is used for 
  104.     24 bit, 16 bit and 8 bit color screens and 8 bit grey screens.
  105.     All other screens are sent through one of the above special purpose codes 
  106.     then use QuickTime to convert the pictures to the appropriate screen depth.
  107.     Obviously special purpose code is faster. If I get lots of calls for 
  108.     screen depths other than the one's I'v supported directly, I'll look into 
  109.     adding more special purpose code.
  110. • In 2.0 I broke the support for adding files called name.mpg, but without 
  111.     a file type of MPEG so you could open files of that type but nothing 
  112.     would happen. Sorry about that. It's been fixed. 
  113. • When files are opened and are not of the default Mac types (for example 
  114.     files imported from a UNIX box, or files on a PC CD ROM) Sparkle uses 
  115.     more intelligence in deciding whether to open these files as MPEGs, QT 
  116.     movies or pictures. If this mechanism is still not general enough for 
  117.     some users (I image mainly users sharing data with PCs), let me know.
  118. • The ``official'' MPEG encoding pattern of IBBPBBPBBPBB is now a pre-defined 
  119.     option. Some people asking for this as a pre-defined option have given me
  120.     slightly different patterns as the ``official'' pattern. However what I 
  121.     have used is, to the best of my knowledge correct, and I'm assuming these
  122.     people who wrote to me simply made typos. If you have comments on this, 
  123.     please mail me.
  124. • I twiddled the RGB to YCrCB conversion code that is the first step in 
  125.      encoding MPEGs. The changes won't affect anyone except people creating 
  126.      MPEG movies whose width or height is odd, in which case the very last 
  127.      row or column of pixels will have more accurate color. The important 
  128.      change, however, was that I no longer read beyond the end of some arrays,
  129.      so I'm ready for when Apple give us protected memory a year from now.
  130. • Under certain rare circumstances, depending on the number of frames int the 
  131.     input file and the IPB pattern used, the last frame or two of the input 
  132.     would not be saved in the output MPEG. This is fixed.
  133. • MPEG encoding now can specify a frame rate (in the past this was always 
  134.     30 fps). Sure the range of choices is limited---blame the people who 
  135.     wrote the MPEG spec---those are, basically, the only choices.
  136.     1) Can people with MPEG hardware verify that this works for me?
  137.         On my mac with 10fps max playback, it's tough to see if this works.
  138.     2) There are some frame rates I've omitted that are very close to those 
  139.        I give, for example 29.97 fps. At some point i'll get the finicky 
  140.        time right to support these but it's a pretty low priority compared 
  141.        to sound.
  142.  
  143. What's new in 2.01?
  144. • Implemented padding YUV macroblocks with a repeat of the last value of
  145.      each YUV triplet when macroblocks at the edge of a frame spill over 
  146.      the edge. The most common case of this is a 120 pixel high movie with a 
  147.      macroblock height of 128. In the past this spillover was filled randomly.
  148.      The result of this is that MPEGs created are about 15% smaller.
  149. • Some diddling with the code used by the IDCT algorithm gives a speed boost 
  150.     of about 5% to both playing and encoding MPEGs.
  151. • Fixed a serious bug that prevented you from playing an MPEG if you started 
  152.     playing    it then interrupted it. A nice byproduct of this is that I got 
  153.     jogging of MPEGs fully operational. You can now repeatedly view a section 
  154.     of the MPEG by hitting command-right-arrow then command-left-arrow to keep 
  155.     the MPEG moving forwards then backwards.
  156. • Altered the alert popped up when the Thread Manager is not present to make
  157.     it more palatable to corporate and institutional users.
  158. • Fixed the MPEG buffering which would give problematic results for very small
  159.     MPEGs (say three frames or less).
  160. • Finally went through all resources, marking them purgable or not and removing
  161.     the unnecessary ones.
  162. • Fixed the "PBBIBB" default frame set to make it correspond to the user view
  163.     of things, not my programmer's view.
  164. • Fixed a bug that prevented a temporary movie created by the movie controller 
  165.     handling an MPEG file from being destroyed.
  166. • Fixed two bugs in the Think Class Library dealing with the loading of dialogs 
  167.     then manipulating them without setting their memory blocks to non-purgable.
  168. • Fixed a long-standing bug in the MPEG player buffer-handling code that 
  169.     would cause the MPEG frame index to be incorrect if it was created while 
  170.     memory was short. This probably never caused problems except for very long
  171.     MPEGs.
  172. • When converting a QT movie into a different movie form, the dialog that comes
  173.     up asking you for compression options will have the frame rate and key
  174.     frame rate set at what the original movie used, sparing you from having to
  175.     guess. I will eventually have this working across all file conversions, 
  176.     not just movie-->movie.
  177. • The Think C 6 compiler contains a bug when performing code-motion optimization 
  178.     on complex loops. If you run through the assembly it produces in this case,
  179.     it performs some very nifty register coloring and creating induction 
  180.     variables for the loop. It then leaves out one crucial instruction to 
  181.     update one of the induction variables each pass through the loop and so 
  182.     the code is garbage. 
  183.     As far as I can tell, this only affects one function in my code and I have
  184.     used a #pragma there to prevent it happening, but the fact that bugs like
  185.     this exist in the compiler is a little worrying.
  186. • Revised all memory allocation so that it is more likely to not to use up all
  187.     memory reserves and leave nothing for toolbox.
  188. • Found an especially nasty bug involving grabbing frames from a QT movie 
  189.     which, when memory ran low, would leave the system GrafPort/GDevice 
  190.     environment in an inconsistent state.
  191. • Revised all uses of GWorld to use tempMem, but fallback to local heap if 
  192.     tempMem is unavailable.
  193. • Altered the strings used to popup error messages at startup if QuickTime 
  194.     is not available. These got mixed up when I moved code around.
  195. • The code to build the MPEG index when an MPEG is opened would run out of space
  196.     when a very large MPEG was opened---one of a thousand frames or more. Now 
  197.     memory is allocated for this a little more flexibly.
  198. • Fixed a bug I inserted when I changed from Sparkle 1.6 to 1.7. I rewrote the
  199.     Berkeley motion vector code to speed it up and in the process made one 
  200.     little typo, shifting a variable right by 1 not 2. The effect of this, in 
  201.     Sparkles 1.7 and 2.0 was that, under very rare occasions, blocks of color 
  202.     would appear a few pixels off from where they should be. The only place I 
  203.     ever saw this was three or four frames of the MPEG sales110.mpg.
  204.     This is not related to a separate problem. 
  205.     The motion estimation code in the MPEG encoder (at present the Berkeley code
  206.     with practially no changes) is not perfect. It sometimes creates 
  207.     blocks that appear to be wildly off from where they should be (by quite a few
  208.     pixels). This is not very obvious in real life, but is very obvious in animation.
  209.     This is largely a quantization artifact---it goes away if you lower the 
  210.     quantizations. But obviosly you don't want to do that always, just where 
  211.     necessary, so you really want a smarter quantizer that is adaptive. 
  212.     I'll work on issues like this as soon as I can.
  213. • When converting a movie with sound to MPEG or QT, occasionally pops of sound could 
  214.     be heard. This is fixed.
  215. • When converting movies with very low keyframe rates (say 20 or more dependent 
  216.     frames per keyframe) occasionally the display of the movie would get confused 
  217.     and appear to alternate between two different frames. This is fixed.
  218.  
  219. What's new in 2.0?
  220. • The structure of the code has been completely altered to be based on 
  221.     threads. This makes it much easier for me to add new features to the code 
  222.     while having it retain MultiFinder friendliness.
  223. • Now opens and plays QT movies.
  224. • Now can create MPEG files. General conversion from 
  225.      {QT or MPEG}--->{QT or MPEG} is possible.
  226. • Many minor changes to the way files are opened, named and such.
  227. • Makes minor use of the speech manager if installed.
  228. • You can now play MPEGs backwards.
  229.  
  230. What's new in 1.71?
  231. • The progress bar now updates itself properly at the very end of saving 
  232.     each frame to Quicktime. It also draws itself better on b/w screens.
  233. • More of the default QT movie player keystrokes now work.
  234. • The app notes if an MPEG file has many errors and if so warns you that 
  235.     it has probably been transferred to the mac incorrectly.
  236. • I have incorporated a workaround to make Sparkle work with the QT VM 
  237.     extension. However I do not recommend you use the two together. If you do 
  238.     use QT VM you will find Sparkle's memory usage a little less efficient 
  239.     than without using QT VM. This is because of the way QT VM works.
  240. • Fixed a bug that caused unusually sized MPEGs to display as distorted.
  241. • Sparkle should now cope a little better with low memory situations.
  242. • Added a small tweak to improve drawing on 16bit screens under low 
  243.     memory conditions.
  244. • Uses the most recently released version on the floating windoid.
  245. • I have learned of an app that will convert QT to MPEG on the mac. It's 
  246.     not the easiest thing to use and I recommend this only for people 
  247.     who really need this, not for people who just want to play around.
  248.     See the README file for details.
  249.  
  250. What's new in 1.7?
  251. • Opening files is much faster.
  252. • Fixed the size of the checkboxes in the Open File dialog to the correct 
  253.     size for all those millions of people who use Chicago as their system 
  254.     font cause they have no sense of aesthetics. Oops.
  255. • Now when Sparkle changes the file-type of an file, the Finder will update 
  256.     the icon immediately, instead of forcing you to open and close the 
  257.     folder to see a new icon. Thanks to Jamie McCarthy for telling me how 
  258.     to do this.
  259. • Added an "About Sparkle" dialog box to quieten the constant stream of 
  260.     complaints about this.
  261. • Changed the way progress is reported. I think the new scheme feels 
  262.     rather more elegant. (If you have a fast machine and only use small 
  263.     MPEGs, you may not notice this change much.)
  264. • Adde random access. You can now use the step backward stepper, or 
  265.     simply click in movie controller where you want to go. All standard 
  266.     movie controller clicks and keystrokes are supported.
  267. • Restructured the internal code vastly. This is what took most of the 
  268.     time and while it doesn't directly help you users, it gives me
  269.      a framework that's much easier to build on. For example it should be 
  270.      trivial to add Apple Event support when I get round to that.
  271. • Three or four minor bugs were squelched, mostly involving Sparkle crashing
  272.      when it encountered MPEGs with invalid data in them.
  273. • Now quits gracefully when started on a 68000 mac like a Classic, rather 
  274.     than crashing. I'm sure    lots of people care about this.
  275. • Added better multi-tasking support. This takes two forms. 
  276.     One is that the length of the timeslices Sparkle uses before giving up 
  277.     the CPU are now absolute times.  Before they were numbers that worked 
  278.     well for my SE/30, but probably not optimally for slower or faster 
  279.     machines.
  280.     The second is that you can now context switch out of Sparkle while it 
  281.     is doing slow QT conversions (especially converting to Compact Video).
  282.     The way I have implemented this is not wonderful, but the best I can 
  283.     do given the present way the code is structured. The next version 
  284.     will use the Thread Manager and will do this rather better.
  285.     This second form of timeslicing is done through the 
  286.     SetSequenceProgressProc() call which is new in QT1.6 and which is why 
  287.     I now require use of QT1.6. Also QT does not yield the CPU very often,
  288.     and (as far as I know) there is no way to make it yield more often.
  289.     So while your machine is no longer completely frozen as it does its
  290.     conversion, it's still not too pleasant to use for typing. I can't do 
  291.     much about this---complain to Apple and tell them to change this part of 
  292.     QT, or better yet the whole OS.
  293.  
  294. What's new in 1.6?
  295. • I became tired of continually having to explain to people about mac 
  296.     file types, so I wrote a file filter function for the Open File dialog 
  297.     box which displays ALL files with a .mpg suffix. This should make use a 
  298.     lot easier for novices.
  299. • Fixed a bug that involved writing to NULL.
  300. • Fixed a bug that prevented IBP type MPEGs from rewinding when they 
  301.     reached the end and the play button was hit twice.
  302.  
  303. What's new in 1.5.2?
  304. • I was disposing of a handle twice (specifically I was disposing of a 
  305.     pixmap and then its colortable, not realizing that DisposPixMap took 
  306.     care of the colortable for me.) Thanks to Dan Sears for pointing this out.
  307.     I never noticed a problem due to this bug, but it's probably good to 
  308.     have killed it.
  309.  
  310. Whats new in 1.5.1?
  311. • One part of my speed optimizing code was not being initialized properly. 
  312.     This caused a very specific type of MPEG file to show parts of its first 
  313.     frame as greenish blobs. Now fixed.
  314. • The code to detect errors in a corrupted MPEG file has been made even 
  315.     more robust. Substantially better recovery from such errors, by 
  316.     rebuilding the lost parts of a frame from the previous frame, has been 
  317.     introduced. Thanks to a wonderfully corrupt MPEG file I pulled off 
  318.     usenet with about 15 misc errors in it for pointing out new and 
  319.     ingenious ways to fail.
  320. • New icons, courtesy of Richard Lim in Britain. I hope you like them.
  321.     You will have to rebuild the desktop to see them.